package com.chinairi.mall.dao;

import com.chinairi.mall.controller.viewobject.GoodsInfoVO;
import com.chinairi.mall.model.GoodsInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinairi.mall.service.modelobject.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 供应商查看商品的一些基本信息和一些维护功能，比如上下架，起订量的设置
//供应商上架表
//供应 Mapper 接口
 * </p>
 *
 * @author Webgasd
 * @since 2020-09-12
 */
public interface GoodsInfoMapper extends BaseMapper<GoodsInfo> {

    /**
     * 根据企业主键查询协议
     * @param userId
     * @param flag
     * @return
     */
    List<ViewContractMatRelMO> getContractList(@Param("userId") String userId,@Param("flag") String flag);

    /**
     * 获取合同下的物料
     * 只返回物料id和合同id
     * @param contDbid
     * @return
     */
    List<GoodsInfoVO> selectByContDbid(@Param("contDbid") String contDbid);

    /**
     * 根据主键id获取商品信息
     * @param id 主键
     * @return GoodsInfoVO
     */
    GoodsInfoVO selectByDbId(@Param("id") String id);

    /**
     * 根据物料的dbId获取商品和供应商所有的信息
     * @param dbIdList 物料dbIdList
     * @return List
     */
    List<GoodsAllInfoByMatDbIdMO> selectAllInfoByMatDbId(@Param("dbIdList") List<String> dbIdList);

    /**
     * 批量提交商品审核
     * @param goodsInfoList
     */
    void batchUpdateStatus(@Param("list") List<GoodsInfo> goodsInfoList);

    /**
     * 获取首页商品列表
     * 搜索条件为：
     * goodsName  商品名称     全模糊搜索
     * matCode    物料类别编码  左起始搜索  主要是侧边栏进入后使用
     * csShopName 店铺名称     全模糊搜索
     * @param homeGoodsMo
     * @return
     */
    List<HomeGoodsMO> selectHomeGoods(@Param("search") HomeGoodsMO homeGoodsMo);

    /**
     * 获取商品列表
     * @param homeGoodsMo
     * @return
     */
    List<HomeGoodsMO> getGoodsListByCsDbId(@Param("search") HomeGoodsMO homeGoodsMo);

    /**
     * 获取热销商品
     * @return
     */
    List<HomeGoodsMO> selectHotSaleGoodList();

    /**
     * excel 批量插入商品信息
     * @param list
     */
    void batchInsert(@Param("list") List<GoodsInfoMO> list);

    /**
     * 根据物料编码查询这个物料下的所有信息
     * @param matCodeList
     * @param userId
     * @return
     */
    List<MaterialMO> selectMaterialByMatCodeList(@Param("matCodeList") List<String> matCodeList, @Param("userId") String userId);

    /**
     * 查询店铺下已上架商品的数量
     * @param csDbid
     * @return
     */
    Integer countGoodsNum(@Param("csDbid") String csDbid);

    /**
     * 获取店铺下的商品信息
     * @param goodsInfoVO
     * @param csDbId
     */
    List<GoodsInfoVO> getListGoodsInfo(@Param("goodsInfoVO") GoodsInfoVO goodsInfoVO, @Param("csDbId") String csDbId);
}
